home *** CD-ROM | disk | FTP | other *** search
/ Plug-In Power Pack for Netscape Communicator / Plug-In Power Pack for Netscape Communicator.iso / plugins / dataviews / dvtools / demos / citydemo / c4i_utils.c < prev    next >
C/C++ Source or Header  |  1997-05-08  |  3KB  |  112 lines

  1. #ifndef lint
  2. static char SccsId[]= "@(#)c4i_utils.c    V1.9    4/17/95";
  3. #endif
  4.  
  5. /*------------------------------------------------------------------
  6. | file name -- c3i_utils.c
  7. |
  8. | functions             Description
  9. | ---------             -----------
  10. | Get_View              Returns the previously or newly loaded view.
  11. | Get_Coords        Returns the screen and virtual coords of a drawport.
  12. |
  13. | load_view        Loads a view, rebinds it and adds it to the table.
  14. |
  15. |-----------------------------------------------------------------*/
  16.  
  17. #include "std.h"
  18. #include "dvstd.h"
  19. #include "dvtools.h"
  20. #include "Tfundecl.h"
  21. #include "dvGR.h"
  22. #include "c4i_vars.h"
  23. #include "GRfundecl.h"
  24. #include "VTfundecl.h"
  25. #include "c4i_fundecl.h"
  26.  
  27.  
  28.  
  29. /***************** Begin Function Declarations *************/
  30. LOCAL  VIEW load_view V_P_((char *view_name, BOOLPARAM insert_requested));
  31. /***************** End Function Declarations *************/
  32.  
  33. /*-----------------------------------------------------------------
  34. |
  35. |  load_view
  36. |       Loads the view and adds it to the View Table if requested.
  37. |       Returns the loaded view.  If the view can't be loaded,
  38. |       (TviLoad returned NULL), return NULL.
  39. */
  40. LOCAL VIEW 
  41. load_view (view_name, insert_requested)
  42.      char *view_name;
  43.      BOOLPARAM insert_requested;
  44. {
  45.   VIEW view = NULL;
  46.  
  47.   /* Load the view and add it to the table */
  48.   view = TviLoad (view_name);
  49.   if (view)
  50.     {
  51.       if (insert_requested)
  52.         (VOID) VTstsninsert (ViewTable,
  53.                              VIstrclone (view_name), (INT *) view);
  54.  
  55.       /* Rebind the dyanmic object's variables to real-time data */
  56.       RebindData (view);        /* found in c4i_rebind.c */
  57.  
  58.     }
  59.  
  60.   return view;
  61. }
  62.  
  63. /*-----------------------------------------------------------------
  64. |
  65. |  Get_View
  66. |       Returns the view associated with the view_name. If the
  67. |       view isn't loaded yet, load it.  Add it to the ViewTable
  68. |    if requested.  This routine should be called to get/load
  69. |    views that don't have their own drawports.  If a view is
  70. |    being displayed in it own drawport, use GetDrawport()
  71. */
  72. VIEW 
  73. Get_View (view_name, add_to_requested)
  74.      char *view_name;
  75.      BOOLPARAM add_to_requested;
  76. {
  77.   SYMNODE key;
  78.   VIEW view;
  79.  
  80.   /* See if the view is already in the Views Table */
  81.   key = VTstkeyfind (ViewTable, view_name);
  82.   if (key)
  83.     return ((VIEW) VTsnvalue (key));
  84.  
  85.   /* The View must not be loaded yet, so load it */
  86.   view = load_view (view_name, add_to_requested);
  87.  
  88.   return view;
  89. }
  90.  
  91. /*-----------------------------------------------------------------
  92. |
  93. |  GetCoords - Calculates the screen and virtural coordinates for
  94. |     the given drawing coordinates of a drawport.
  95. |
  96. |vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  97. */
  98. void 
  99. GetCoords (dp, dr_vp, scr_vp, virt_vp)
  100.      DRAWPORT dp;
  101.      RECTANGLE *dr_vp;
  102.      RECTANGLE *scr_vp;
  103.      RECTANGLE *virt_vp;
  104. {
  105.   (VOID) TdpWorldToScreen (dp, &dr_vp->ll, &scr_vp->ll);
  106.   (VOID) TdpWorldToScreen (dp, &dr_vp->ur, &scr_vp->ur);
  107.   (VOID) GRscs_to_vcs (&scr_vp->ll, &virt_vp->ll);
  108.   (VOID) GRscs_to_vcs (&scr_vp->ur, &virt_vp->ur);
  109. }
  110.  
  111. /*END GETCOORDS */
  112.